.TH std::common_reference_with 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::common_reference_with \- std::common_reference_with

.SH Synopsis
   Defined in header <concepts>
   template< class T, class U >

   concept common_reference_with =
       std::same_as<std::common_reference_t<T, U>,                        \fI(since C++20)\fP
   std::common_reference_t<U, T>> &&
       std::convertible_to<T, std::common_reference_t<T, U>> &&

       std::convertible_to<U, std::common_reference_t<T, U>>;

   The concept common_reference_with<T, U> specifies that two types T and U share a
   common reference type (as computed by std::common_reference_t) to which both can be
   converted.

   Semantic requirements

   T and U model std::common_reference_with<T, U> only if, given equality-preserving
   expressions t1, t2, u1 and u2 such that decltype((t1)) and decltype((t2)) are both T
   and decltype((u1)) and decltype((u2)) are both U,

     * std::common_reference_t<T, U>(t1) equals std::common_reference_t<T, U>(t2) if
       and only if t1 equals t2; and
     * std::common_reference_t<T, U>(u1) equals std::common_reference_t<T, U>(u2) if
       and only if u1 equals u2.

   In other words, the conversion to the common reference type must preserve equality.

.SH See also

   common_reference       determines the common reference type of a group of types
   basic_common_reference \fI(class template)\fP
   (C++20)
   common_with            specifies that two types share a common type
   (C++20)                (concept)
   common_type            determines the common type of a group of types
   \fI(C++11)\fP                \fI(class template)\fP
